﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
namespace Maximilian_GPX
{
    public partial class MaximilianGPX : Form
    {
        String strPfad = "";/*
                             * Hier kommen kommen die Variablen die dem Gesammten Ptrogramm 
                             * bekannt sein müsse.
                             * Auch Klassenvariablen oder Eigenschaften genant
                             * Wenn ein werd n einer Methode hie hinen gespeichert wird
                             * ist er allen Methoden bekannt.
                             */
        public MaximilianGPX()
        {
            InitializeComponent();
        }
        private void MnEnde_Click(object sender, EventArgs e)
        {
            Application.Exit();//bendet das Programm
        }
        private void MnÖffnen_Click(object sender, EventArgs e)
        {
            /* hier wird ein Objekt der Klasse (typ) Openfile dialog erzeugt.
             * dieses Objekt beinhaltet alle möglichen Funktionalitäten eines typischen
             * indows-Date-Öffnen-Dialoges.
             */
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            //nun kann der Dilog konfiguriert werden.
            openFileDialog1.Filter = "GPX Dateien|*.gpx";//Definiert den Dateiendungsfilter
            openFileDialog1.Title = "GPX Datei öffnen";//benennt den Titel des Fensters
            //openFileDialog1.InitialDirectory = "c:\\";//Bezeichnet das Standard Verzeichnis

            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {// dies geschiet nur wenn eine Datei ausgewählt ist.
                strPfad = openFileDialog1.FileName;//hier wird der Pfad für das gesammte system gespeichert
                MnAuswertung.Enabled = true;
                MnKarte.Enabled = true;
                Mndateianzeigen.Enabled = true;
                tBoxAnzeige.Visible = false;
            }
        }
        private void Mndateianzeigen_Click(object sender, EventArgs e)
        {

            tBoxAnzeige.Text = "";
            tBoxAnzeige.Text += strPfad;
            string strLinie;
            StreamReader srInput = new StreamReader(strPfad);
            /* Ojekt Streamreader wird generiert
             * -reserviert Speicherplatz
             * -Pfad übergabe
             * ermöglicht zugriff auf Datei
             * -Zugriff auf Funktionen des Dateisystems(Sandkasten)
               Zeleweise lesen und augeben
             * 3 Aktionen
             * 1. Readlibne des Stream readers
             * 2. Wert von Rad line in strlinie gespeichert
             * 3. Prüfung ob Wert ungleich null ist 
             * Wert= Inhalt der Zeile der Datei oder null*/
            tBoxAnzeige.Visible = true;
            while ((strLinie = srInput.ReadLine()) != null)
            {
                /*Zelen wechsel="\r\n"
                 * anhängen +=
                  hier Zeile verarbeiten...*/
                tBoxAnzeige.Text += strLinie + "\r\n";
                strLinie = "";
            }
            srInput.Close();/*streamreader wird geschlossen
            Speicherbereich wird freigegeben*/
            /*
            XmlReader reader = XmlReader.Create(strPfad);
            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element: // Der Knoten ist ein Element.
                        tBoxAnzeige.Text += "<" + reader.Name + ">" + "\r\n";
                        break;
                    case XmlNodeType.Text: //Anzeigen des Textes in jedem Element.
                        tBoxAnzeige.Text += reader.Value + "\r\n";
                        break;
                    case XmlNodeType.EndElement: //Anzeigen des Endes des Elements.
                        tBoxAnzeige.Text +="</" + reader.Name + ">"+"\r\n";
                        break;
                }
            }
            */

        }
        private void MnKarte_Click(object sender, EventArgs e)
        {
            tBoxAnzeige.Visible = false;
            //.Visible = true;
        }
        private void MnAuswertung_Click(object sender, EventArgs e)
        {
            XmlReader reader = XmlReader.Create(strPfad);
            tBoxAnzeige.Text = "";
            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element: // Der Knoten ist ein Element.
                        tBoxAnzeige.Text += "<" + reader.Name + ">" + "\r\n";
                        break;
                    case XmlNodeType.Text: //Anzeigen des Textes in jedem Element.
                        tBoxAnzeige.Text += reader.Value + "\r\n";
                        break;
                    case XmlNodeType.EndElement: //Anzeigen des Endes des Elements.
                        tBoxAnzeige.Text += "</" + reader.Name + ">" + "\r\n";
                        break;
                }
            }
            tBoxAnzeige.Visible = true;
        }
    }
}